from pandas import read_csv
import pandas as pd
import plotly.express as px
import flask
Aplicamos el algoritmo de decisión multicriterio a los modelos que, al menos, han obtenido un Win en la tabla Wins-Losses generada en el notebook Stastical_Analysis. Estos modelos son: GBR_Lag5, RF_Lag5, GBR_Lag3, Lasso_Lag5, SVR_Lag3 y EN_Lag5
#modelos = ['RF_lag3', 'RF_lag5', 'Lasso_lag5', 'SVR_lag3', 'GBR_lag3', 'GBR_lag5', 'EN_lag5']
modelos = ['RF_lag3', 'RF_lag5', 'Lasso_lag5', 'GBR_lag3', 'GBR_lag5', 'EN_lag5']
Leemos las tablas de errores que serán necesarios para la aplicación del algoritmo
RMSE_errores_test = read_csv('../Datos_preprocesados/RMSE_errores_test.csv', encoding ='latin-1', sep = ',', na_values = ['NaN', 'NaT'])
RMSE_errores_test.drop(columns = "Predicciones", inplace = True)
MAE_errores_test = read_csv('../Datos_preprocesados/MAE_errores_test.csv', encoding ='latin-1', sep = ',', na_values = ['NaN', 'NaT'])
MAE_errores_test.drop(columns = "Predicciones", inplace = True)
CC_test = read_csv('../Datos_preprocesados/CC_test.csv', encoding ='latin-1', sep = ',', na_values = ['NaN', 'NaT'])
CC_test.drop(columns = "Predicciones", inplace=True)
Descartamos de las tablas leídas aquellos modelos con los que no vamos a trabajar, creando para cada modelo al que aplicaremos el algoritmo una nueva tabla con RMSE, MAE y CC para cada una de las predicciones
# Guardaremos las tablas generadas para cada modelo en una lista
tablas = []
for i in range(0, len(modelos)):
df = pd.DataFrame()
df['RMSE'] = RMSE_errores_test[modelos[i]]
df['MAE'] = MAE_errores_test[modelos[i]]
# En el caso de CC, cuanto más alto mejor, al contrario que RMSE y MAE
df['CC'] = round(1 - CC_test[modelos[i]],3)
# Guardamos en un csv
df.to_csv(path_or_buf = '../Datos_preprocesados/multicriterio_'+modelos[i]+'.csv')
# Añadimos a la lista
tablas.append(df)
i = 0
for t in tablas:
# Creamos df
datos = {'RMSE': t['RMSE'].values,
'MAE': t['MAE'].values,
'CC': t['CC'].values}
df = pd.DataFrame(data = datos)
fig = px.line(df, x = t.index, y = df.columns,
title = 'RMSE, MAE, CC para el modelo '+modelos[i], width = 700, height = 400)
#t[['RMSE','MAE','CC']].plot(grid = True,title = modelos[i])
flask.Markup(fig)
fig.show("notebook")
i = i+1